from flask import Blueprint, request, jsonify, url_for
import os
import time
from werkzeug.utils import secure_filename

upload_bp = Blueprint('upload_bp', __name__, url_prefix='/system')

# 指定临时文件夹路径
TEMP_FOLDER = os.path.abspath(os.path.join('applications', 'static', 'temp'))

# 确保临时文件夹存在
if not os.path.exists(TEMP_FOLDER):
    os.makedirs(TEMP_FOLDER)
    print('临时文件夹已创建: %s' % TEMP_FOLDER)  # 使用 print 语句


# 上传文件, 返回文件名Url
@upload_bp.route('/upload-file', methods=['POST'])
def upload_file():
    print('开始上传文件...')
    print(request.files)
    if 'file' not in request.files:
        print('请求中没有文件字段')
        return jsonify({'msg': '没有文件被上传'}), 400

    file = request.files['file']
    if file.filename == '':
        return jsonify({'msg': '未选择文件'}), 400

    # 使用原始文件名
    original_filename = secure_filename(file.filename)
    # 保存文件到临时文件夹
    file_path = os.path.join(TEMP_FOLDER, original_filename)

    print('准备保存文件到: %s' % file_path)  # 使用 print 语句

    try:
        file.save(file_path)  # 直接保存到原始文件名
        print('文件已保存到: %s' % file_path)  # 使用 print 语句
    except Exception as e:
        print('保存文件时出错: %s' % str(e))  # 使用 print 语句
        return jsonify({'msg': '文件保存失败', 'error': str(e)}), 500

    # 生成静态文件的 URL
    file_url = url_for('static', filename=f'temp/{original_filename}')
    print('文件URL11111:', file_url)
    # 返回文件的 URL，确保包含完整的前缀
    return jsonify({
        'code': 200,
        'data': {'url': file_url, 'filename': original_filename},
        'msg': '文件上传成功',

    }), 200


@upload_bp.route('/delete-temp-file', methods=['POST'])
def delete_temp_file():
    data = request.json
    filename = data.get('filename')
    file_path = os.path.join(TEMP_FOLDER, filename)
    if os.path.exists(file_path):
        os.remove(file_path)
        return jsonify({'msg': '文件已删除'}), 200
    return jsonify({'msg': '文件不存在'}), 404
